package com.chushouya.controller.product.admin;

import com.chushouya.common.constant.ServiceType;
import com.general.framework.core.enums.BusinessType;
import com.general.framework.core.schema.PageResult;
import com.general.framework.core.schema.Response;
import com.general.framework.web.annotations.Log;
import com.general.framework.web.annotations.RepeatSubmit;
import com.chushouya.product.dto.admin.tempevaluate.TempEvaluateItemDetailDTO;
import com.chushouya.product.dto.admin.tempevaluate.TempEvaluateItemListDTO;
import com.chushouya.product.dto.admin.tempevaluate.TempEvaluateItemQuery;
import com.chushouya.product.dto.admin.tempevaluate.TempEvaluateItemSaveDTO;
import com.chushouya.product.dto.admin.tempevaluate.TempEvaluateItemUpdateDTO;
import com.chushouya.product.service.admin.TempEvaluateItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@Api(tags = ServiceType.PLATFORM + "模板估价项目管理")
@RestController
@RequestMapping(ServiceType.PLATFORM + "/tempEvaluateItem")
public class TempEvaluateItemController {

    @Resource
    private TempEvaluateItemService tempEvaluateItemService;

    @ApiOperation("获取模板估价项目分页列表")
    @GetMapping("/page")
    public Response<PageResult<TempEvaluateItemListDTO>> page(TempEvaluateItemQuery query) {
        return Response.success(tempEvaluateItemService.selectTempEvaluateItemPageResult(query));
    }

    @ApiOperation("获取模板估价项目列表")
    @GetMapping("/list")
    public Response<List<TempEvaluateItemListDTO>> list(TempEvaluateItemQuery query) {
        return Response.success(tempEvaluateItemService.selectTempEvaluateItemList(query));
    }

    @ApiOperation("根据ID获取模板估价项目详细信息")
    @GetMapping("/detail")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "tempItemId", value = "模板估价项目ID", required = true),
    })
    public Response<TempEvaluateItemDetailDTO> getDetail(Long tempItemId) {
        return Response.success(tempEvaluateItemService.getTempEvaluateItemDetail(tempItemId));
    }

    @ApiOperation("新增模板估价项目")
    @Log(businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @RepeatSubmit
    public Response<Long> add(@Validated @RequestBody TempEvaluateItemSaveDTO tempEvaluateItem) {
        return Response.success(tempEvaluateItemService.addTempEvaluateItem(tempEvaluateItem));
    }

    @ApiOperation("修改模板估价项目")
    @Log(businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    public Response<Long> edit(@Validated @RequestBody TempEvaluateItemUpdateDTO tempEvaluateItem) {
        return Response.success(tempEvaluateItemService.editTempEvaluateItem(tempEvaluateItem));
    }

    @ApiOperation("删除模板估价项目")
    @Log(businessType = BusinessType.DELETE)
    @PostMapping("/remove")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "tempItemId", value = "模板估价项目ID", required = true)
    })
    public Response<Void> remove(Long tempItemId) {
        tempEvaluateItemService.removeTempEvaluateItem(tempItemId);
        return Response.success();
    }

    @ApiOperation("根据模板ID获取估价项目列表")
    @GetMapping("/listByTempId")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "tempId", value = "模板ID", required = true)
    })
    public Response<List<TempEvaluateItemListDTO>> listByTempId(Long tempId) {
        return Response.success(tempEvaluateItemService.selectTempEvaluateItemListByTempId(tempId));
    }

    @ApiOperation("根据项目ID获取模板估价项目列表")
    @GetMapping("/listByItemId")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "itemId", value = "项目ID", required = true)
    })
    public Response<List<TempEvaluateItemListDTO>> listByItemId(Long itemId) {
        return Response.success(tempEvaluateItemService.selectTempEvaluateItemListByItemId(itemId));
    }

    //参考 SkuEvaluateItemController  增加 @PostMapping("/updatePrice") @PostMapping("/deleteBySkuItemId") @PostMapping("/addSingle")

}
